home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 22 / Cream of the Crop 22.iso / doom / mnstlure.zip / PROGS / DEBUG.QC < prev    next >
Text File  |  1996-09-04  |  24KB  |  1,031 lines

  1. /*$cd /raid/quake/id1/models/player_4
  2. $origin 0 -6 24
  3. $base base
  4. $skin skin
  5.  
  6. $frame stand1 stand2 stand3 stand4 stand5*/
  7.  
  8. //void() walkmonster_start;
  9. void(float dist) ai_run;
  10. float(entity targ) infront;
  11.  
  12.  
  13. .float MEFexpire;
  14. float  MGFexpire_limit=30;
  15. float  MGFmobileexpire_limit=80;
  16. .float bubclass;
  17. .entity reportent;
  18. .string oldmodel;
  19. .vector investigate;
  20. .float  debugflags;
  21. .entity childdot;
  22. .vector dotoffset;
  23.  
  24. .vector origmins;
  25. .vector origmaxs;
  26. .entity mydots;
  27.  
  28. .void()mythink;
  29. .float mynextthink;
  30. .void()origthink;
  31.  
  32. float dotcount=0;
  33. float maxdots=100;
  34. float dotsmade=0;
  35. float dotskilled=0;
  36.  
  37. float  ADJUSTMODE_SIDEPLUS=1;//deceptively named, sorry. a better name
  38. float  ADJUSTMODE_SIDEMINUS=2;//would be _SIDEMAX and _SIDEMIN
  39.  
  40. float  ADJUSTMODE_ALL=4;
  41. float  ADJUSTMODE_SIDE=8;
  42. float  ADJUSTMODE_BOTH=16;
  43.  
  44. float  ADJUSTMODE_X=32;
  45. float  ADJUSTMODE_Y=64;
  46. float  ADJUSTMODE_Z=128;
  47.  
  48. float  adjustmode=145;
  49.  
  50. float  DEBUG_PAINTED=1;
  51. float  DEBUG_HIDDEN=2;
  52. float  DEBUG_CHASE=4;
  53. float  DEBUG_ORIGSET=8;
  54. float  DEBUG_SLOWED=16;
  55.  
  56.  
  57.  
  58. float  MOVE_DOT_TIME=0.2;
  59.  
  60. float  DOTCLASS_MASTER = 0;
  61. float  DOTCLASS_LBL = 1;
  62. float  DOTCLASS_LBR = 2;
  63. float  DOTCLASS_LFL = 3;
  64. float  DOTCLASS_LFR = 4;
  65. float  DOTCLASS_TBL = 5;
  66. float  DOTCLASS_TBR = 6;
  67. float  DOTCLASS_TFL = 7;
  68. float  DOTCLASS_TFR = 8;
  69. float  DOTCLASS_VIEW = 9;
  70.  
  71. void() MYF_ai_run = {
  72.   self.enemy=self.oldenemy;
  73.   self.nextthink=time+0.5;
  74.   self.think=self.th_walk;
  75. };
  76.  
  77. void () MYF_movedots = {
  78. local entity next,thisdot;
  79. thisdot=self;
  80. next=thisdot.childdot;
  81. while(next!=world){
  82.       next=thisdot.childdot;
  83.       setorigin (thisdot,thisdot.owner.origin+thisdot.dotoffset);
  84.       thisdot=next;
  85.      }
  86. };
  87.  
  88. void() MYF_killdots = {
  89.  local entity next,thisdot;
  90.  next=self.childdot;
  91.  thisdot=self;
  92.  local string dclass;
  93.  self.owner.debugflags=self.owner.debugflags - (self.owner.debugflags & DEBUG_PAINTED);
  94.  while(next!=world){
  95. /*    bprint("killing dot ");
  96.     bprint(ftos(thisdot.bubclass));
  97.     bprint("\n");*/
  98.     next=thisdot.childdot;
  99.     remove(thisdot);
  100.     dotskilled=dotskilled+1;
  101.     thisdot=next;
  102.     dotcount=dotcount - 1;
  103.   }
  104. /* bprint("killing dot ");
  105.  bprint(ftos(thisdot.bubclass));
  106.  bprint("\n");
  107.  dotskilled=dotskilled+1;
  108.  remove(thisdot);*/
  109. };
  110.  
  111.  
  112. void () MYF_dotthink = {
  113.  MYF_movedots();
  114.  self.nextthink=time+MGFexpire_limit;
  115.  self.think=MYF_killdots;
  116. };
  117.  
  118. void () MYF_dotthink_mobile = {
  119.  self.nextthink=time+MOVE_DOT_TIME;
  120.  self.think=MYF_dotthink_mobile;
  121.  self.MEFexpire=self.MEFexpire+MOVE_DOT_TIME;
  122.  if(self.MEFexpire>MGFmobileexpire_limit){
  123.      MYF_killdots();
  124.      return;
  125.     }
  126.  MYF_movedots();
  127. };
  128.  
  129. void (entity on) MYF_resetdots = {
  130.  local entity next,thisdot;
  131.  local entity s2;
  132.  
  133.  if(on.mydots==world)
  134.      return;
  135.  if(!on.mydots)
  136.      return;
  137.  
  138.  thisdot=on.mydots;
  139.  next=thisdot.childdot;
  140.  while(next!=world){
  141.   next=thisdot.childdot;
  142.   s2=thisdot;
  143.   if(s2.bubclass==DOTCLASS_MASTER){
  144.       s2.dotoffset='0 0 0';
  145.      }
  146.   else
  147.   if(s2.bubclass==DOTCLASS_LBL){
  148.       s2.dotoffset_x=on.mins_x;
  149.       s2.dotoffset_y=on.mins_y;
  150.       s2.dotoffset_z=on.mins_z;
  151.      }
  152.   else
  153.   if(s2.bubclass==DOTCLASS_LBR){
  154.       s2.dotoffset_x=on.maxs_x;
  155.       s2.dotoffset_y=on.mins_y;
  156.       s2.dotoffset_z=on.mins_z;
  157.      }
  158.   else
  159.   if(s2.bubclass==DOTCLASS_LFL){
  160.       s2.dotoffset_x=on.maxs_x;
  161.       s2.dotoffset_y=on.maxs_y;
  162.       s2.dotoffset_z=on.mins_z;
  163.      }
  164.   else
  165.   if(s2.bubclass==DOTCLASS_LFR){
  166.       s2.dotoffset_x=on.mins_x;
  167.       s2.dotoffset_y=on.maxs_y;
  168.       s2.dotoffset_z=on.mins_z;
  169.      }
  170.   else
  171.   if(s2.bubclass==DOTCLASS_TBL){
  172.       s2.dotoffset_x=on.maxs_x;
  173.       s2.dotoffset_y=on.maxs_y;
  174.       s2.dotoffset_z=on.maxs_z;
  175.      }
  176.   else
  177.   if(s2.bubclass==DOTCLASS_TBR){
  178.       s2.dotoffset_x=on.mins_x;
  179.       s2.dotoffset_y=on.maxs_y;
  180.       s2.dotoffset_z=on.maxs_z;
  181.      }
  182.   else
  183.   if(s2.bubclass==DOTCLASS_TFL){
  184.       s2.dotoffset_x=on.maxs_x;
  185.       s2.dotoffset_y=on.mins_y;
  186.       s2.dotoffset_z=on.maxs_z;
  187.     }
  188.   else
  189.   if(s2.bubclass==DOTCLASS_TFR){
  190.       s2.dotoffset_x=on.mins_x;
  191.       s2.dotoffset_y=on.mins_y;
  192.       s2.dotoffset_z=on.maxs_z;
  193.      }
  194.   else
  195.   if(s2.bubclass==DOTCLASS_VIEW){
  196.       s2.dotoffset=on.view_ofs;
  197.      }
  198.   setorigin(s2,on.origin+s2.dotoffset);
  199.   thisdot=next;
  200.  }
  201. };
  202.  
  203.  
  204.  
  205. entity(entity on,float bclass) MYF_makedot = {
  206.  local entity s2;
  207.  
  208.  if(dotcount>=maxdots){
  209.      centerprint(self,"max dot count reached\n");
  210.      return world;
  211.     }
  212.  dotcount=dotcount + 1;
  213.  dotsmade=dotsmade+1;
  214.  s2=spawn();
  215.  s2.owner = on;
  216.  setsize(s2, '0 0 0', '0 0 0');
  217.  
  218.  s2.classname = "dot";
  219.  s2.movetype = MOVETYPE_NONE;
  220.  s2.solid = SOLID_NOT;
  221.  setmodel (s2, "progs/s_bubble.spr");
  222.  s2.MEFexpire=0;
  223.  s2.bubclass=bclass;
  224.  s2.childdot=world;
  225.  
  226.  if(bclass==DOTCLASS_MASTER){
  227.      s2.dotoffset='0 0 0';
  228.     }
  229.  else
  230.  if(bclass==DOTCLASS_LBL){
  231.      s2.dotoffset_x=on.mins_x;
  232.      s2.dotoffset_y=on.mins_y;
  233.      s2.dotoffset_z=on.mins_z;
  234.     }
  235.  else
  236.  if(bclass==DOTCLASS_LBR){
  237.      s2.dotoffset_x=on.maxs_x;
  238.      s2.dotoffset_y=on.mins_y;
  239.      s2.dotoffset_z=on.mins_z;
  240.     }
  241.  else
  242.  if(bclass==DOTCLASS_LFL){
  243.      s2.dotoffset_x=on.maxs_x;
  244.      s2.dotoffset_y=on.maxs_y;
  245.      s2.dotoffset_z=on.mins_z;
  246.     }
  247.  else
  248.  if(bclass==DOTCLASS_LFR){
  249.      s2.dotoffset_x=on.mins_x;
  250.      s2.dotoffset_y=on.maxs_y;
  251.      s2.dotoffset_z=on.mins_z;
  252.     }
  253.  else
  254.  if(bclass==DOTCLASS_TBL){
  255.      s2.dotoffset_x=on.maxs_x;
  256.      s2.dotoffset_y=on.maxs_y;
  257.      s2.dotoffset_z=on.maxs_z;
  258.     }
  259.  else
  260.  if(bclass==DOTCLASS_TBR){
  261.      s2.dotoffset_x=on.mins_x;
  262.      s2.dotoffset_y=on.maxs_y;
  263.      s2.dotoffset_z=on.maxs_z;
  264.     }
  265.  else
  266.  if(bclass==DOTCLASS_TFL){
  267.      s2.dotoffset_x=on.maxs_x;
  268.      s2.dotoffset_y=on.mins_y;
  269.      s2.dotoffset_z=on.maxs_z;
  270.     }
  271.  else
  272.  if(bclass==DOTCLASS_TFR){
  273.      s2.dotoffset_x=on.mins_x;
  274.      s2.dotoffset_y=on.mins_y;
  275.      s2.dotoffset_z=on.maxs_z;
  276.     }
  277.  else
  278.  if(bclass==DOTCLASS_VIEW){
  279.      s2.dotoffset=on.view_ofs;
  280. //     s2.dotoffset_y=on.maxs_y;
  281.     }
  282. // setorigin(s2,on.origin+self.dotoffset);
  283.  return s2;
  284. };
  285.  
  286.  
  287. void(entity on) MYF_putdots = {
  288.  local entity master,s2;
  289.  s2=MYF_makedot(on,0);
  290.  if(s2==world) return;
  291.  if(on.flags & FL_MONSTER || on.classname=="player"){
  292.      bprint("painting as mobile\n");
  293.      s2.nextthink = time + 0.5;
  294.      s2.think = MYF_dotthink_mobile;
  295.     }
  296.  else{
  297.      bprint("painting as NON-mobile\n");
  298.      s2.nextthink = time + 0.5;
  299.      s2.think = MYF_dotthink;
  300.     }
  301.  
  302.  s2.classname = "masterdot";
  303.  master=s2;
  304.  on.debugflags=on.debugflags | DEBUG_PAINTED;
  305.  on.mydots=s2;
  306.  
  307.  s2=MYF_makedot(on,DOTCLASS_LBL);
  308.  if(s2==world) return;
  309.  master.childdot=s2;
  310.  master=s2;
  311.  
  312.  s2=MYF_makedot(on,DOTCLASS_LBR);
  313.  if(s2==world) return;
  314.  master.childdot=s2;
  315.  master=s2;
  316.  
  317.  s2=MYF_makedot(on,DOTCLASS_LFL);
  318.  if(s2==world) return;
  319.  master.childdot=s2;
  320.  master=s2;
  321.  
  322.  s2=MYF_makedot(on,DOTCLASS_LFR);
  323.  if(s2==world) return;
  324.  master.childdot=s2;
  325.  master=s2;
  326.  
  327.  s2=MYF_makedot(on,DOTCLASS_TBL);
  328.  if(s2==world) return;
  329.  master.childdot=s2;
  330.  master=s2;
  331.  
  332.  s2=MYF_makedot(on,DOTCLASS_TBR);
  333.  if(s2==world) return;
  334.  master.childdot=s2;
  335.  master=s2;
  336.  
  337.  s2=MYF_makedot(on,DOTCLASS_TFL);
  338.  if(s2==world) return;
  339.  master.childdot=s2;
  340.  master=s2;
  341.  
  342.  s2=MYF_makedot(on,DOTCLASS_TFR);
  343.  if(s2==world) return;
  344.  master.childdot=s2;
  345.  master=s2;
  346.  s2.childdot=world;
  347.  
  348.  if(on.flags & FL_MONSTER || on.classname=="player"){
  349.      s2=MYF_makedot(on,DOTCLASS_VIEW);
  350.      if(s2==world) return;
  351.      master.childdot=s2;
  352.      s2.childdot=world;
  353.     }
  354. };
  355.  
  356.  
  357. void () MYF_reportent = {
  358.  if(!self.reportent){
  359.      centerprint(self,"no current entity\n");
  360.      return;
  361.     }
  362.  centerprint(self,"reporting entity\n");
  363.  eprint(self.reportent);
  364. };
  365.  
  366.  
  367. void () MYF_hidereportent = {
  368.  if(self.reportent==world){
  369.      centerprint(self,"hide attempt failed, current entity = world\n");
  370.      return;
  371.     }
  372.  else
  373.  if(!self.reportent){
  374.      centerprint(self,"hide attempt failed, no current entity\n");
  375.      return;
  376.     }
  377.  else
  378.  if(self.reportent.debugflags & DEBUG_HIDDEN){
  379.      centerprint(self,"hide attempt failed, current entity already hideden\n");
  380.      return;
  381.     }
  382.  centerprint(self,"hiding entity model\n");
  383.  if(!(self.reportent.debugflags & DEBUG_ORIGSET)){
  384.      self.reportent.origmins= self.reportent.mins;
  385.      self.reportent.origmaxs= self.reportent.maxs;
  386.      self.reportent.debugflags =  self.reportent.debugflags | DEBUG_ORIGSET;
  387.     }
  388.  self.reportent.oldmodel=self.reportent.mdl;
  389.  centerprint(self,self.reportent.oldmodel);
  390.  setmodel(self.reportent,"");
  391.  self.reportent.debugflags =  self.reportent.debugflags | DEBUG_HIDDEN | DEBUG_ORIGSET;
  392. };
  393.  
  394. void (float r) MYF_unhidereportent = {
  395.  if(self.reportent==world){
  396.      if(r)
  397.          centerprint(self,"UN-hide attempt failed, current entity = world\n");
  398.      return;
  399.     }
  400.  else
  401.  if(!self.reportent){
  402.      if(r)
  403.          centerprint(self,"UN-hide attempt failed, no current entity\n");
  404.      return;
  405.     }
  406.  else
  407.  if(!(self.reportent.debugflags & DEBUG_HIDDEN)){
  408.      if(r)
  409.          centerprint(self,"UN-hide attempt failed, current entity NOT hideden\n");
  410.      return;
  411.     }
  412.  if(r)
  413.      centerprint(self,"unhiding entity model\n");
  414.  setorigin(self.reportent,self.reportent.origin+'0 0 10');
  415.  setsize(self.reportent,self.reportent.origin+self.reportent.origmins,self.reportent.origin+self.reportent.origmaxs);
  416.  setmodel(self.reportent,self.reportent.oldmodel);
  417.  self.reportent.debugflags =  self.reportent.debugflags -(self.reportent.debugflags & DEBUG_HIDDEN);
  418. };
  419.  
  420.  
  421.  
  422.  
  423. void() MYF_paintself = {
  424.  centerprint(self,"painting self\n");
  425.  if(self.debugflags & DEBUG_PAINTED)return;
  426.  MYF_putdots(self);
  427.  self.debugflags = self.debugflags | DEBUG_PAINTED;
  428. };
  429.  
  430. void() MYF_countdots = {
  431.  bprint("dots made = ");
  432.  bprint(ftos(dotsmade));
  433.  bprint("\n");
  434.  bprint("dots killed = ");
  435.  bprint(ftos(dotskilled));
  436.  bprint("\n");
  437.  bprint("dots count = ");
  438.  bprint(ftos(dotcount));
  439.  bprint("\n");
  440. };
  441.  
  442. entity() MYF_findtargetview ={
  443.  local entity head, selected,final;
  444.  local float dist, temp, hlth;
  445.  
  446.  dist = 2000;
  447.  selected = world;
  448.  final=world;
  449.  head = findradius(self.origin, 1000);
  450.  while(head){
  451.          traceline(self.origin,head.origin,TRUE,self);
  452.          if ((trace_fraction >= 1) && (vlen(head.origin - self.origin) < dist) && (infront(head))){
  453. //                 if(!self.debugflags & DEBUG_PAINTED){
  454. //                     final = head;
  455. //                    }
  456.               selected = head;
  457.               dist = vlen(head.origin - self.origin);
  458.  
  459.              }
  460.          head = head.chain;
  461.         }
  462.   return selected;
  463. };
  464.  
  465.  
  466. void() MYF_paint = {
  467.  centerprint(self,"painting enity\n");
  468.  local entity monster;
  469.  monster = MYF_findtargetview();
  470.  if (monster == world || monster.classname=="masterdot" || monster.classname=="dot"){
  471.       sprint(self,"No Target\n");
  472.       return;
  473.      }
  474. // eprint(monster);
  475.  if(monster.debugflags & DEBUG_PAINTED){
  476.      sprint(self,"Target already painted\n");
  477.      return;
  478.     }
  479.  MYF_putdots(monster);
  480. };
  481.  
  482.  
  483. entity() MYF_findclosestent ={
  484.  local entity head, selected;
  485.  local float dist, temp;
  486.  
  487.  dist = 2000;
  488.  selected = world;
  489.  head = findradius(self.origin, 1000);
  490.  while(head){
  491.          traceline(self.origin,head.origin,TRUE,self);
  492.          if ((trace_fraction >= 1) && (vlen(head.origin - self.origin) < dist) && (infront(head))){
  493.               selected = head;
  494.               dist = vlen(head.origin - self.origin);
  495.              }
  496.          head = head.chain;
  497.         }
  498.   return selected;
  499. };
  500.  
  501.  
  502. void() MYF_makereportent = {
  503.  local entity monster;
  504.  
  505.  centerprint(self,"setting report entity\n");
  506.  if(self.reportent != world)
  507.      if(self.reportent){
  508.          MYF_unhidereportent(0);
  509.          self.reportent.effects=self.reportent.effects | EF_DIMLIGHT;
  510.         }
  511.  monster = MYF_findclosestent();
  512.  if (monster == world){
  513.       monster=self;
  514.       sprint(self,"report entity set to self\n");
  515.      }
  516.  eprint(monster);
  517.  monster.effects=monster.effects | EF_DIMLIGHT;
  518.  self.reportent=monster;
  519. };
  520.  
  521. void() MYF_unfreeze = {
  522.  centerprint(self,"unfreezing monster\n");
  523.  self.takedamage=DAMAGE_YES;
  524. // self.movetype=MOVETYPE_STEP;
  525. // self.solid=SOLID_SLIDEBOX;
  526.  self.nextthink=time+0.2;
  527.  setorigin(self,self.origin+'0 0 5');
  528.  self.think=MYF_ai_run;
  529. };
  530.  
  531.  
  532. void() MYF_freezemonster = {
  533.  local entity monster;
  534.  monster = MYF_findclosestent();
  535.  if (monster == world || !(monster.flags & FL_MONSTER)){
  536.       sprint(self,"No Target\n");
  537.       return;
  538.      }
  539.  centerprint(self,"freezing monster\n");
  540.  
  541.  monster.takedamage=DAMAGE_NO;
  542.  monster.nextthink=time+40;
  543.  monster.think=MYF_unfreeze;
  544. };
  545.  
  546.  
  547. void() MYF_chaseplaneview = {
  548.   //doesn't work yet
  549.  if(self.debugflags & DEBUG_CHASE){
  550.      self.debugflags = self.debugflags - (self.debugflags & DEBUG_CHASE);
  551.      self.view_ofs='0 0 22';
  552.     }
  553.  else{
  554.      self.debugflags = self.debugflags | DEBUG_CHASE;
  555.      self.view_ofs='0 0 -50';
  556.     }
  557. };
  558.  
  559.  
  560. void() MYF_debughelp = {
  561.  sprint(self,"y power up\n");
  562.  sprint(self,"u show model vectors as dots\n");
  563.  sprint(self,"i show player model vectors as dots\n");
  564.  sprint(self,"o freeze monster in view\n");
  565.  sprint(self,"p report dot count\n");
  566.  sprint(self,"h this help thing\n");
  567.  sprint(self,"j mark entity as selected\n");
  568.  sprint(self,"k print info on currently entiy\n");
  569.  sprint(self,"l hide currently entities model\n");
  570.  sprint(self,"n UN-hide currently entities model\n");
  571.  sprint(self,"m toggle chase plane view\n");
  572.  sprint(self,"q turn on and cycle camera\n");
  573.  sprint(self,"w cycle camera\n");
  574.  sprint(self,"d cycle adjust bbox mode how\n");
  575.  sprint(self,"f cycle adjust bbox mode dir\n");
  576.  sprint(self,"g toggle adjust bbox mode mins/maxs\n");
  577.  sprint(self,"c adjust bbox larger\n");
  578.  sprint(self,"v adjust bbox smaller\n");
  579.  sprint(self,"b adjust bbox to orig\n");
  580.  sprint(self,"r report bbox\n");
  581.  sprint(self,"e slow monster\n");
  582. };
  583.  
  584.  
  585.  
  586. void() MYF_reportadjustmode = {
  587.  if(adjustmode & ADJUSTMODE_ALL){
  588.      sprint(self,"adjust mode = all ");
  589.     }
  590.  else
  591.  if(adjustmode & ADJUSTMODE_SIDE){
  592.      sprint(self,"adjust mode = side ");
  593.     }
  594.  else{
  595.      sprint(self,"adjust mode = both ");
  596.     }
  597.  
  598.  if(adjustmode & ADJUSTMODE_X){
  599.      sprint(self," x ");
  600.     }
  601.  else
  602.  if(adjustmode & ADJUSTMODE_Y){
  603.      sprint(self," y ");
  604.     }
  605.  else{
  606.      sprint(self," z ");
  607.  }
  608.  
  609.  if(adjustmode & ADJUSTMODE_SIDEPLUS){
  610.      sprint(self,"maxs\n");
  611.     }
  612.  else{
  613.      sprint(self,"mins\n");
  614.     }
  615. };
  616.  
  617. void() MYF_setadjustmodehow = {
  618.  if(adjustmode & ADJUSTMODE_ALL){
  619.      adjustmode = adjustmode - (adjustmode & ADJUSTMODE_ALL);
  620.      adjustmode = adjustmode | ADJUSTMODE_SIDE;
  621.     }
  622.  else
  623.  if(adjustmode & ADJUSTMODE_SIDE){
  624.      adjustmode = adjustmode - (adjustmode & ADJUSTMODE_SIDE);
  625.      adjustmode = adjustmode | ADJUSTMODE_BOTH;
  626.     }
  627.  else{
  628.      adjustmode = adjustmode - (adjustmode & ADJUSTMODE_BOTH);
  629.      adjustmode = adjustmode | ADJUSTMODE_ALL;
  630.  }
  631.  MYF_reportadjustmode();
  632. };
  633.  
  634. void() MYF_setadjustmodedir = {
  635.  if(adjustmode & ADJUSTMODE_X){
  636.      adjustmode = adjustmode - (adjustmode & ADJUSTMODE_X);
  637.      adjustmode = adjustmode | ADJUSTMODE_Y;
  638.     }
  639.  else
  640.  if(adjustmode & ADJUSTMODE_Y){
  641.      adjustmode = adjustmode - (adjustmode & ADJUSTMODE_Y);
  642.      adjustmode = adjustmode | ADJUSTMODE_Z;
  643.     }
  644.  else{
  645.      adjustmode = adjustmode - (adjustmode & ADJUSTMODE_X);
  646.      adjustmode = adjustmode | ADJUSTMODE_X;
  647.  }
  648.  MYF_reportadjustmode();
  649. };
  650.  
  651. void() MYF_toggleadjustmodeplus = {
  652.  if(adjustmode & ADJUSTMODE_SIDEPLUS){
  653.      adjustmode = adjustmode - (adjustmode & ADJUSTMODE_SIDEPLUS);
  654.      adjustmode = adjustmode | ADJUSTMODE_SIDEMINUS;
  655.     }
  656.  else{
  657.      adjustmode = adjustmode - (adjustmode & ADJUSTMODE_SIDEMINUS);
  658.      adjustmode = adjustmode | ADJUSTMODE_SIDEPLUS;
  659.     }
  660.  MYF_reportadjustmode();
  661. };
  662.  
  663. void() MYF_reportbounds={
  664.  local string outval;
  665.  sprint(self,"mins ");
  666.  outval=vtos(self.reportent.mins);
  667.  sprint(self,outval);
  668.  sprint(self,"\n");
  669.  sprint(self,"maxs ");
  670.  outval=vtos(self.reportent.maxs);
  671.  sprint(self,outval);
  672.  sprint(self,"\n");
  673. };
  674.  
  675.  
  676. void(float plus) MYF_adjustboundingbox = {
  677.  local vector pmin,pmax;
  678.  local vector omin,omax;
  679.  
  680.  if(!self.reportent){
  681.      centerprint(self,"adjust failed, no current entity\n");
  682.      return;
  683.     }
  684.  else
  685.  if(self.reportent==world){
  686.      centerprint(self,"adjust failed, current entity = world\n");
  687.      return;
  688.     }
  689.  if(!(self.reportent.debugflags & DEBUG_ORIGSET)){
  690.      sprint(self,"setting orig vals\n");
  691.      self.reportent.origmins= self.reportent.mins;
  692.      self.reportent.origmaxs= self.reportent.maxs;
  693.      self.reportent.debugflags =  self.reportent.debugflags | DEBUG_ORIGSET;
  694.     }
  695.  
  696.  if(plus==999){
  697.      sprint(self,"setting back to orig vals\n");
  698.      self.reportent.mins=self.reportent.origmins;
  699.      self.reportent.maxs=self.reportent.origmaxs;
  700.      MYF_resetdots(self.reportent);
  701.      MYF_reportbounds();
  702.      return;
  703.     }
  704.  pmin=self.reportent.mins;//cua I'm to lazy to type self.reportent.mins_ over and over
  705.  pmax=self.reportent.maxs;//cua I'm to lazy to type self.reportent.mins_ over and over
  706.  
  707.  omin=pmin;//cuz I'm lazy typist;
  708.  omax=pmax;
  709.  
  710.  if(!(adjustmode & ADJUSTMODE_ALL)){
  711.     pmin_x=pmin_x + plus;
  712.     pmin_y=pmin_y + plus;
  713.     pmin_z=pmin_z + plus;
  714.     pmax_x=pmax_x + plus;
  715.     pmax_y=pmax_y + plus;
  716.     pmax_z=pmax_z + plus;
  717.   }
  718.  
  719.  
  720.  if(adjustmode & ADJUSTMODE_ALL){
  721.      if(pmin_x<0)
  722.          pmin_x=pmin_x - plus;
  723.      else
  724.          pmin_x=pmin_x + plus;
  725.  
  726.      if(pmin_y<0)
  727.          pmin_y=pmin_y - plus;
  728.      else
  729.          pmin_y=pmin_y + plus;
  730.  
  731.      if(pmin_z<0)
  732.          pmin_z=pmin_z - plus;
  733.      else
  734.          pmin_z=pmin_z + plus;
  735.  
  736.      if(pmax_x<0)
  737.          pmax_x=pmax_x - plus;
  738.      else
  739.          pmax_x=pmax_x + plus;
  740.  
  741.      if(pmax_y<0)
  742.          pmax_y=pmax_y - plus;
  743.      else
  744.          pmax_y=pmax_y + plus;
  745.  
  746.      if(pmax_z<0)
  747.          pmax_z=pmax_z - plus;
  748.      else
  749.          pmax_z=pmax_z + plus;
  750.     }
  751.  else
  752.  if(adjustmode & ADJUSTMODE_SIDE){
  753.      if(adjustmode & ADJUSTMODE_X){
  754.          pmin_y=omin_y;
  755.          pmin_z=omin_z;
  756.          pmax_y=omax_y;
  757.          pmax_z=omax_z;
  758.         }
  759.      else
  760.      if(adjustmode & ADJUSTMODE_Y){
  761.          pmin_x=omin_x;
  762.          pmin_z=omin_z;
  763.          pmax_x=omax_x;
  764.          pmax_z=omax_z;
  765.          }
  766.      else{
  767.          pmin_y=omin_y;
  768.          pmin_x=omin_x;
  769.          pmax_y=omax_y;
  770.          pmax_x=omax_x;
  771.         }
  772.      if(adjustmode & ADJUSTMODE_SIDEPLUS){
  773.           pmin=omin;
  774.          }
  775.      else{
  776.           pmax=omax;
  777.         }
  778.     }
  779.  else{
  780.      if(adjustmode & ADJUSTMODE_X){
  781.          pmin_y=omin_y;
  782.          pmin_z=omin_z;
  783.          pmax_y=omax_y;
  784.          pmax_z=omax_z;
  785.          pmin_x=pmin_x-(2*plus);
  786.         }
  787.      else
  788.      if(adjustmode & ADJUSTMODE_Y){
  789.          pmin_x=omin_x;
  790.          pmin_z=omin_z;
  791.          pmax_x=omax_x;
  792.          pmax_z=omax_z;
  793.          pmin_y=pmin_y-(2*plus);
  794.          }
  795.      else{
  796.          pmin_y=omin_y;
  797.          pmin_x=omin_x;
  798.          pmax_y=omax_y;
  799.          pmax_x=omax_x;
  800.          pmin_z=pmin_z-(2*plus);
  801.         }
  802.  }
  803.  
  804.  if(pmax_x<pmin_x)
  805.      pmax_x=omin_x;
  806.  if(pmax_y<pmin_y)
  807.      pmax_y=omin_y;
  808.  if(pmax_z<omin_z)
  809.      pmax_z=omin_z;
  810.  
  811.  if(pmin_x>pmax_x)
  812.      pmin_x=omin_x;
  813.  if(pmin_y>pmax_y)
  814.      pmin_y=omin_y;
  815.  if(pmin_z>pmax_z)
  816.      pmin_z=omin_z;
  817.  
  818.  setsize(self.reportent,pmin,pmax);
  819.  MYF_resetdots(self.reportent);
  820.  MYF_reportbounds();
  821. };
  822.  
  823.  
  824.  
  825. void() MYF_shrinkboundingbox_z = {
  826.  local vector newz;
  827.  if(self.reportent==world){
  828.      centerprint(self,"shrink z attempt failed, current entity = world\n");
  829.      return;
  830.     }
  831.  else
  832.  if(!self.reportent){
  833.      centerprint(self,"shrink z attempt failed, no current entity\n");
  834.      return;
  835.     }
  836.  if(!(self.reportent.debugflags & DEBUG_ORIGSET)){
  837.      self.reportent.origmins= self.reportent.mins;
  838.      self.reportent.origmaxs= self.reportent.maxs;
  839.      self.reportent.debugflags =  self.reportent.debugflags | DEBUG_ORIGSET;
  840.     }
  841.  newz=self.reportent.maxs;
  842.  newz_z=newz_z - 1;
  843.  if(newz_z<0)newz_z=0;
  844.  
  845.  setsize(self.reportent,self.reportent.mins,newz);
  846.  sprint(self,"shrinking z to ");
  847.  sprint(self,ftos(newz_z));
  848.  sprint(self,"\n");
  849. };
  850.  
  851. void() MYF_shrinkboundingbox_x = {
  852.  local vector newx;
  853.  local string outval;
  854.  sprint(self,"made 1\n");
  855.  if(!self.reportent){
  856.      centerprint(self,"shrink z attempt failed, no current entity\n");
  857.      sprint(self,"made 1.a\n");
  858.      return;
  859.     }
  860.  else
  861.  if(self.reportent==world){
  862.      centerprint(self,"shrink z attempt failed, current entity = world\n");
  863.      sprint(self,"made 1.b\n");
  864.      return;
  865.     }
  866.  sprint(self,"made 2\n");
  867.  if(!(self.reportent.debugflags & DEBUG_ORIGSET)){
  868.      sprint(self,"made 2.a\n");
  869.      sprint(self,"setting orig vals\n");
  870.      self.reportent.origmins= self.reportent.mins;
  871.      self.reportent.origmaxs= self.reportent.maxs;
  872.      self.reportent.debugflags =  self.reportent.debugflags | DEBUG_ORIGSET;
  873.      sprint(self,"made 2.b\n");
  874.     }
  875.  sprint(self,"made 3\n");
  876.  newx=self.reportent.maxs;
  877.  newx_x=newx_x - 5;
  878.  if(newx_x<=self.reportent.mins_x)newx_x=self.reportent.mins_x+1;
  879.  sprint(self,"made 4\n");
  880.  setsize(self.reportent,self.reportent.mins,newx);
  881.  sprint(self,"made 5\n");
  882.  sprint(self,"shrinking x to ");
  883.  outval=ftos(newx_x);
  884.  sprint(self,outval);
  885.  sprint(self,"\n");
  886.  sprint(self,"made 6\n");
  887. };
  888.  
  889. void() MYF_shrinkboundingbox_y = {
  890.  local vector newy;
  891.  if(self.reportent==world){
  892.      centerprint(self,"shrink y attempt failed, current entity = world\n");
  893.      return;
  894.     }
  895.  else
  896.  if(!self.reportent){
  897.      centerprint(self,"shrink y attempt failed, no current entity\n");
  898.      return;
  899.     }
  900.  if(!(self.reportent.debugflags & DEBUG_ORIGSET)){
  901.      self.reportent.origmins= self.reportent.mins;
  902.      self.reportent.origmaxs= self.reportent.maxs;
  903.      self.reportent.debugflags =  self.reportent.debugflags | DEBUG_ORIGSET;
  904.     }
  905.  newy=self.reportent.maxs;
  906.  newy_y=newy_y - 1;
  907.  if(newy_y<0)newy_y=0;
  908.  setsize(self.reportent,self.reportent.mins,newy);
  909.  sprint(self,"shrinking y to ");
  910.  sprint(self,ftos(newy_y));
  911.  sprint(self,"\n");
  912. };
  913.  
  914.  
  915. void() MYF_growboundingbox_z = {
  916.  local vector newz;
  917.  if(self.reportent==world){
  918.      centerprint(self,"grow z attempt failed, current entity = world\n");
  919.      return;
  920.     }
  921.  else
  922.  if(!self.reportent){
  923.      centerprint(self,"grow z attempt failed, no current entity\n");
  924.      return;
  925.     }
  926.  if(!(self.reportent.debugflags & DEBUG_ORIGSET)){
  927.      self.reportent.origmins= self.reportent.mins;
  928.      self.reportent.origmaxs= self.reportent.maxs;
  929.      self.reportent.debugflags =  self.reportent.debugflags | DEBUG_ORIGSET;
  930.     }
  931.  newz=self.reportent.maxs;
  932.  newz_z=newz_z + 1;
  933.  if(newz_z>500)newz_z=500;
  934.  
  935.  setsize(self.reportent,self.reportent.mins,newz);
  936.  sprint(self,"growing z to ");
  937.  sprint(self,ftos(newz_z));
  938.  sprint(self,"\n");
  939. };
  940.  
  941. void() MYF_growboundingbox_y = {
  942.  local vector newz;
  943.  if(self.reportent==world){
  944.      centerprint(self,"grow z attempt failed, current entity = world\n");
  945.      return;
  946.     }
  947.  else
  948.  if(!self.reportent){
  949.      centerprint(self,"grow z attempt failed, no current entity\n");
  950.      return;
  951.     }
  952.  if(!(self.reportent.debugflags & DEBUG_ORIGSET)){
  953.      self.reportent.origmins= self.reportent.mins;
  954.      self.reportent.origmaxs= self.reportent.maxs;
  955.      self.reportent.debugflags =  self.reportent.debugflags | DEBUG_ORIGSET;
  956.     }
  957.  newz=self.reportent.maxs;
  958.  newz_y=newz_y + 1;
  959.  if(newz_y>500)newz_y=500;
  960.  
  961.  setsize(self.reportent,self.reportent.mins,newz);
  962.  sprint(self,"growing y to ");
  963.  sprint(self,ftos(newz_y));
  964.  sprint(self,"\n");
  965. };
  966.  
  967. void() MYF_growboundingbox_x = {
  968.  local vector newz;
  969.  if(self.reportent==world){
  970.      centerprint(self,"grow x attempt failed, current entity = world\n");
  971.      return;
  972.     }
  973.  else
  974.  if(!self.reportent){
  975.      centerprint(self,"grow x attempt failed, no current entity\n");
  976.      return;
  977.     }
  978.  if(!(self.reportent.debugflags & DEBUG_ORIGSET)){
  979.      self.reportent.origmins= self.reportent.mins;
  980.      self.reportent.origmaxs= self.reportent.maxs;
  981.      self.reportent.debugflags =  self.reportent.debugflags | DEBUG_ORIGSET;
  982.     }
  983.  newz=self.reportent.maxs;
  984.  newz_x=newz_x + 1;
  985.  if(newz_x>500)newz_x=500;
  986.  
  987.  setsize(self.reportent,self.reportent.mins,newz);
  988.  sprint(self,"growing x to ");
  989.  sprint(self,ftos(newz_x));
  990.  sprint(self,"\n");
  991. };
  992.  
  993.  
  994. void() MYF_unslow = {
  995.  centerprint(self,"unfreezing monster\n");
  996.  self.takedamage=DAMAGE_YES;
  997. // self.movetype=MOVETYPE_STEP;
  998. // self.solid=SOLID_SLIDEBOX;
  999.  self.nextthink=time+0.2;
  1000.  setorigin(self,self.origin+'0 0 5');
  1001.  self.think=MYF_ai_run;
  1002. };
  1003.  
  1004. void() MYF_mythink = {
  1005.  self.origthink();
  1006.  self.nextthink=time+10;
  1007.  self.origthink=self.think;
  1008.  self.think=MYF_mythink;
  1009. };
  1010.  
  1011.  
  1012. void() MYF_slowmonster = {
  1013.  local entity monster;
  1014.  monster = MYF_findclosestent();
  1015.  if (monster == world || !(monster.flags & FL_MONSTER)){
  1016.       sprint(self,"No Target\n");
  1017.       return;
  1018.      }
  1019.  if(monster.debugflags & DEBUG_SLOWED){
  1020.    sprint(self,"Monstered already slowed\n");
  1021.    return;
  1022.   }
  1023.  
  1024.  centerprint(self,"slowing monster\n");
  1025.  monster.debugflags=monster.debugflags | DEBUG_SLOWED;
  1026.  monster.nextthink=time+10;
  1027.  monster.origthink=monster.think;
  1028.  monster.think=MYF_mythink;
  1029. };
  1030.  
  1031.